<?php 

use Think\Image;
use Think\Page;
//加密
function encrypt($data, $key)
{
	$key    =   md5($key);
	$x      =   0;
	$len    =   strlen($data);
	$l      =   strlen($key);
	for ($i = 0; $i < $len; $i++)
	{
		if ($x == $l)
		{
			$x = 0;
		}
		$char .= $key{$x};
		$x++;
	}
	for ($i = 0; $i < $len; $i++)
	{
		$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
	}
	return base64_encode($str);
}
//解密
function decrypt($data, $key)
{
	$key = md5($key);
	$x = 0;
	$data = base64_decode($data);
	$len = strlen($data);
	$l = strlen($key);
	for ($i = 0; $i < $len; $i++)
	{
		if ($x == $l)
		{
			$x = 0;
		}
		$char .= substr($key, $x, 1);
		$x++;
	}
	for ($i = 0; $i < $len; $i++)
	{
		if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
		{
			$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
		}
		else
		{
			$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
		}
	}
	return $str;
}



			//二位数组查值
			function arr_rule($arr,$where="id"){
				  $data=$arr;
				if(is_array($arr)){
					$data=array();
					foreach ($arr as $r){
						$data[$r[$where]]=$r;
					}
				}
				return $data;
			}
//关闭窗口
function closewindow(){
	header("Content-Type:text/html;charset=utf-8");
echo "<script type='text/javascript'>alert('保存成功！');document.onload = window.close();</script>";

}

/**
 * 生成缩略图
 * @param string     源图绝对完整地址{带文件名及后缀名}
 * @param int        缩略图宽{0:此时目标高度不能为0，目标宽度为源图宽*(目标高度/源图高)}
 * @param int        缩略图高{0:此时目标宽度不能为0，目标高度为源图高*(目标宽度/源图宽)}
 */

function thumb($src_img,$w = 75, $h = 75)
{
	preg_match("/^(.*)\./",$src_img,$arr1);
	preg_match("/\.(.*)$/",$src_img,$arr2);
	$dst_img=$arr1[1]."_thumb_".$w."_".$h.".".$arr2[1];
	
	if(is_file(".".$dst_img)){
		return $dst_img;
		}else if(is_file(".".$src_img))
		{
			$img=new Image();
			$img->open(".".$src_img)->thumb($w,$h)->save(".".$dst_img);
			return $dst_img;
		}else {
			return $src_img;
		}
}


/**
 * 获取多维数组特定键值   的值
 * @access public
 * @param array $arr 栏目 多维数组
 */

   function get_arr($array, $index) {
    if (!is_array($array)) return null;
    if (isset($array[$index])) return $array[$index];
    foreach ($array as $item) {
        $return = get_arr($item, $index);
        if (!is_null($return)) {
            return $return;
        }
    }
    return null;
}
   	

   //实现无限分类数据的树形格式化
   function genTree($items) {
   	foreach ($items as $item)
   		$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
   	return isset($items[0]['son']) ? $items[0]['son'] : array();
   }
   
   
   //获取栏目子栏目id字符串
   //$cate 为有逻辑结构的数组
   
   function cateSon($cid=0){
   	$cate=get_cateinfo();
   	if(!$cid==0){
   		$cate=get_arr($cate, $cid);
   		if(empty($cate['son'])){
   			return $cid;
   		}else{
   		$cate=$cate['son'];
   		}
   	}
   	$str=cate_son($cate);
   	return substr($str,0,strlen($str)-1);
   }
   function cate_son($cate){
   		$str="";
   		foreach ($cate as $r){
   				$str=$str.$r['id'].",";
   			  if(is_array($r['son'])){
   			    	$str=$str.cate_son($r['son']).",";
   			   }
   		}
    	return $str;
   }
    
   function get_cateinfo(){
   	$cate=S('cateinfo');
   return genTree($cate);	
   }
   
   /**
    * 获取当前位置
    */
   function getArea($catid){
   	$cate=S('cateinfo');
   	$str = "";
   	$catid=$catid;
   	while ($cate[$catid]['pid']!=0){
   		$catid = $cate[$catid]['pid'];
   		$str = $str."<a href='".U('Index/cate',array('catid'=>$cate[$catid]['id']))."'>".$cate[$catid]['name']."</a>&gt;";
   	}
   return  $str;
   }
   
   //删除目录文件
function deldir($dirname){  
    if(file_exists($dirname)){//首先判断目录是否有效  
        $dir = opendir($dirname);//用opendir打开目录  
        while($filename = readdir($dir)){//使用readdir循环读取目录里的内容  
         if($filename != "." && $filename != ".."){//排除"."和".."这两个特殊的目录  
            $file = $dirname."/".$filename;  
            if(is_dir($file)){//判断是否是目录，如果是则调用自身  
                deldir($file); //使用递归删除子目录    
            }else{  
              @unlink($file);//删除文件  
            }  
          }  
        }  
            closedir($dir);//关闭文件操作句柄  
    }  
}  
   
/**
 * 遍历目录所有文件
 * @access public
 * @param var $dir 目录路径
 */
function listDir($dir){
	$dir .= substr($dir, -1) == '/' ? '' : '/';
	$dirInfo = array();
	foreach (glob($dir.'*') as $v) {
		$dirInfo[] = $v;
		if(is_dir($v)){
			$dirInfo = array_merge($dirInfo, listDir($v));
		}
	}
	return $dirInfo;   
}
   
     function getCateData($cate_id,$num,$arr=array()){
   		 $cateinfo=getCateInfo($cate_id);
    	$db=D($cateinfo['table']);
    	if(!isset($arr['cate_id'])){
    		$arr['cate_id']=$cate_id;
    	}
    	return  $db->where($arr)->order('listorder desc')->limit(0,$num)->select();
    }


    /**
     * 获取栏目信息
     * @access public
     * @param int $cate_id 栏目id
     */
     function getCateInfo($cate_id=""){
    
    	$db=D('Admin/Cate');
    	//获得栏目信息
    	$data=$db->get_cate();
    
    	if($cate_id==""){
    		return $data;
    	}else{
    		return $data[$cate_id];
    	}
    
    }
    
    /**
     * 获取广告，幻灯片数据
     * @access public
     * @param int $id    广告ID
     * **/
    function getAdver($id){
    	$db=D('Admin/Adver');
    	return  $db->getOne($id);
    }
    
    
    //截取字符串
    function msubstr($string, $sublen, $start = 0, $code = 'UTF-8')
    {
    if($code == 'UTF-8')
    		{
    			$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
    			preg_match_all($pa, $string, $t_string);
    			if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
    			return join('', array_slice($t_string[0], $start, $sublen));
    		}
    		else
    			{
    				$start = $start*2;
    				$sublen = $sublen*2;
    				$strlen = strlen($string);
    				$tmpstr = '';
    				for($i=0; $i< $strlen; $i++)
    					{
    						if($i>=$start && $i< ($start+$sublen))
    							{
    							if(ord(substr($string, $i, 1))>129)
    								{
    								$tmpstr.= substr($string, $i, 2);
    							}
    							else
    								{
    								$tmpstr.= substr($string, $i, 1);
    								}
    							}
    							if(ord(substr($string, $i, 1))>129) $i++;
    							}
    							if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
    							return $tmpstr;
    					}
    }
    
    /**
     *
     * 中文字符串截取
     * @param string $string
     * @param int $sublen
     * @param int $start
     * @param string $code
     */
    function substr_zh($string, $sublen, $start = 0, $code = 'UTF-8') {
    	if ($code == 'UTF-8') {
    		$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
    		preg_match_all( $pa, $string, $t_string );
    
    		if (count( $t_string[0] ) - $start > $sublen) return join( '', array_slice( $t_string[0], $start, $sublen ) ) . "...";
    		return join( '', array_slice( $t_string[0], $start, $sublen ) );
    	} else {
    		$start = $start * 2;
    		$sublen = $sublen * 2;
    		$strlen = strlen( $string );
    		$tmpstr = '';
    
    		for($i = 0; $i < $strlen; $i ++) {
    			if ($i >= $start && $i < ($start + $sublen)) {
    				if (ord( substr( $string, $i, 1 ) ) > 129) {
    					$tmpstr .= substr( $string, $i, 2 );
    				} else {
    					$tmpstr .= substr( $string, $i, 1 );
    				}
    			}
    			if (ord( substr( $string, $i, 1 ) ) > 129) $i ++;
    		}
    		if (strlen( $tmpstr ) < $strlen) $tmpstr .= "...";
    		return $tmpstr;
    	}
    }
    
    
    /**
     * 获取图片
     * @access public
     * @param int $id    图片ID
     * **/
      function getImg($id){
      	$db=D('Img');
      	return $db->find($id);
      }
      

      /**
       * 获取链接列表
       * @access public
       * param int $num 数据条数
       * **/
        function getLink(){
        	$db=D('Link');
        	return $db->order('listorder desc')->select();
        }      
      
        /**
         * seo设置
         * @acces  chr $a seo_标题
         * param chr $b seo_关键词
         * param chr $c seo_描述
         * **/
        function seoSet($a,$b,$c){
        	C("seo_title",$a);
        	C("seo_key",$b);
        	C("seo_description",$c);
        }
        /**
         * 获取网站信息
         * @acces  int $a 信息ID
         * **/
        function getWebinfo($id){
        	$db=D("Admin/Webinfo");
        	return $db->getWebinfo($id);
        }
        /**
         * 获取网站信息
         * @acces  int $a 信息ID
         * **/
        function getWF($id,$where="content"){
        	$db=D("Admin/Webinfo");
        	$data = $db->getWebinfo($id);
        	return  $data[$where];
        }
        /**
         * 获取分页信息
         * @acces  int $a 信息ID
         * **/
        function page($count,$num=10){
        	$Page = new  \Think\Page($count,$num);// 实例化分页类 传入总记录数
        	$Page->setConfig("first", "&laquo;第一页");
        	$Page->setConfig("prev", "&laquo; 上一页");
        	$Page->setConfig("next", "下一页&raquo;");
        	$Page->setConfig("last", "最后一页&raquo;");
        	$Page->setConfig("theme", "%HEADER% %FIRST% %UP_PAGE%  %LINK_PAGE% %DOWN_PAGE% %END%");
        	return $Page;
        	
        }

        /**
         * 获取日期插件
         * @acces  calss="datepicker"
         * **/
        function getJqDete(){
        return 	$str="
        			 <link rel=\"stylesheet\" type=\"text/css\" href=\"/Public/css/ui/jquery-ui-1.10.4.custom.min.css\">
        			 		   <script type=\"text/javascript\" charset=\"utf-8\" src=\"/Public/js/ui/jquery-ui-1.10.4.custom.min.js\"></script>
        			<script>
				  $(function() {
					  $.datepicker.regional['zh-CN'] =
					     {
					        clearText: '清除', clearStatus: '清除已选日期',
					        closeText: '关闭', closeStatus: '不改变当前选择',
					        prevText: '&lt;上月', prevStatus: '显示上月',
					        nextText: '下月&gt;', nextStatus: '显示下月',
					        currentText: '今天', currentStatus: '显示本月',
					        monthNames: ['一月','二月','三月','四月','五月','六月',
					        '七月','八月','九月','十月','十一月','十二月'],
					        monthNamesShort: ['一','二','三','四','五','六',
					        '七','八','九','十','十一','十二'],
					        monthStatus: '选择月份', yearStatus: '选择年份',
					        weekHeader: '周', weekStatus: '年内周次',
					        dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
					        dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
					        dayNamesMin: ['日','一','二','三','四','五','六'],
					        dayStatus: '设置 DD 为一周起始', dateStatus: '选择 m月 d日, DD',
					        dateFormat: 'yy-mm-dd', firstDay: 1, 
					        initStatus: '请选择日期', isRTL: false
					   };
					  $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
				    $( \".datepicker\" ).datepicker();
        		$(\"#ui-datepicker-div\").hover(function(){
								$(this).css(\"z-index\",\"9999\");
							},function(){
								$(this).css(\"z-index\",\"1\");
							});
				  });
				  </script>";
        	
        }
        
        /*
         * 获取推进位
         *  access   int $model 模型id
         * */
        function getPosition($model=0){
        	$db=D("Admin/Position");
        	$data= $db->getDataList();
        	if($model!=0){
        		$arr=array();
        		foreach ($data as $r){
        			if($r['id']==$model){
        				$arr[]=$r;
        			}
        		}
				return $arr;        		
        	}else{
        		return $data;
        	}
        }
        /**
         * 获取推荐位数据
         */
        function getPD($pid,$num=10,$catid=0){
        	$db = D("Admin/Position");
            return $db->getPositionData($pid,$num,$catid);
// 			$db = D("Admin/Article");
// 			$where="";
// 			if($catid != 0)$where="type=$catid";
// 			$list = $db->where($where)->order("rand()")->limit(0,$num)->select();
// 			return $list;
        }
        
        
        
?>